﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;
using System.Data.SqlClient;
namespace QuanLyPhongMach
{
    public partial class frmPhienKham :DevComponents.DotNetBar.Metro.MetroForm
    {
        
        public delegate void Sua();
        public event Sua KhiSua = null;

        public delegate void Xoa();
        public event Xoa KhiXoa = null;

        public frmPhienKham()
        {
            InitializeComponent();
            GoiYThuoc();
            BangChiSoSucKhoe();
            DanhSachDichVu();
            
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            BenhNhanTheoMa(MaBN);
            DanhSachHSBA();
            //if (Hinh == "")
            //{
            //    pbHinh.Image = Image.FromFile(@"HinhAnh\NoPhoto.gif");
            //}
            //else
            //{
            //    pbHinh.Image = Image.FromFile(@"HinhAnh\2.jpg"); 
            //}
        }

        private void DanhSachDichVu()
        {
            //ngày giờ
            lblNgayLap.Text = DateTime.Today.Date.ToString();
            cbxDichVu.DataSource = DichVu_BUS.DanhSachDichVu();
            cbxDichVu.DisplayMember = "TenDichVu";
            cbxDichVu.ValueMember = "MaDV";
        }
        OpenFileDialog ofd = new OpenFileDialog();
        private void btnChonHinh_Click(object sender, EventArgs e)
        {
            ofd.Title = "Chọn hình";
            ofd.Filter = "Image|*.jpg;*.jpeg;*.gif;*.bmp";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string[] file = ofd.FileName.Split('\\');
                string fileName = file.Last();
                string Source = ofd.FileName;
                string Destination = Environment.CurrentDirectory + @"\HinhAnh" + @"\" + fileName;
                if (System.IO.Directory.Exists(Environment.CurrentDirectory + @"\HinhAnh"))
                {
                    System.IO.Directory.CreateDirectory(Environment.CurrentDirectory + @"\HinhAnh");
                }
                
                if (Destination==Source) 
                {
                    pbHinh.Image = Image.FromFile(ofd.FileName);
                }
                else
                {
                    System.IO.File.Copy(Source, Destination, true);
                    pbHinh.Image = Image.FromFile(ofd.FileName);
                }
            }
        }
        public string MaBN;
        public string Hinh = "";
        private void BenhNhanTheoMa(string ma)
        {
            try
            {
                DataTable dt = new DataTable();
                dt = BenhNhan_BUS.DanhSachBenhNhanTheoMa(ma);
                DataRow dr = dt.Rows[0];
                txtMa.Text = dr["MaBN"].ToString();
                txtTen.Text = dr["TenBN"].ToString();
                if (dr["GioiTinh"].ToString().Equals("1"))
                    rdNam.Checked = true;
                else
                    rdNu.Checked = true;
                txtCMND.Text = dr["CMND"].ToString();
                txtDiaChi.Text = dr["DiaChi"].ToString();
                txtSoDienThoai.Text = dr["SoDienThoai"].ToString();
                txtNgheNghiep.Text = dr["NgheNghiep"].ToString();
                dtiNgayNhap.Text = dr["NgaySinh"].ToString();
                Hinh = dr["Hinh"].ToString();
                string DuongDan = @"HinhAnh\" +Hinh;
                pbHinh.Image = Image.FromFile(DuongDan);
                if (int.Parse(dr["TheBH"].ToString()) == 1)
                    rdCo.Checked = true;
                else
                    rdKhong.Checked = true;
                dgvChiSoSucKhoe.Rows[0].Cells[1].Value = dr["ThanNhiet"].ToString();
                dgvChiSoSucKhoe.Rows[1].Cells[1].Value = dr["HuyetAp"].ToString();
                dgvChiSoSucKhoe.Rows[2].Cells[1].Value = dr["Mach"].ToString();
                dgvChiSoSucKhoe.Rows[3].Cells[1].Value = dr["NhipTho"].ToString();
                dgvChiSoSucKhoe.Rows[4].Cells[1].Value = dr["ChieuCao"].ToString();
                dgvChiSoSucKhoe.Rows[5].Cells[1].Value = dr["CanNang"].ToString();
                dgvChiSoSucKhoe.Rows[6].Cells[1].Value = dr["Vong2"].ToString();
                dgvChiSoSucKhoe.Rows[7].Cells[1].Value = dr["Vong3"].ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
       
        }
      

        //autoupdate textbox
        public void GoiYThuoc()
        {
            AutoCompleteStringCollection acDataSource = new AutoCompleteStringCollection();
            DataTable dt = Thuoc_BUS.DanhSachThuoc();
            foreach(DataRow row in dt.Rows)
            {
                acDataSource.Add(row["TenThuoc"].ToString());
            }
            txtTenThuoc.Clear();
            txtTenThuoc.AutoCompleteMode = AutoCompleteMode.Suggest;
            txtTenThuoc.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtTenThuoc.AutoCompleteCustomSource = acDataSource;            
        }

      

        private void bbSuaThongTinBenhNhan_click(object sender, DevComponents.DotNetBar.ClickEventArgs e)
        {
            
            BenhNhan_DTO bn = new BenhNhan_DTO();
            bn.MaBN = txtMa.Text;
            bn.TenBN = txtTen.Text;
            bn.Mota = "";
            bn.CMND = txtCMND.Text;
            bn.NgheNghiep = txtNgheNghiep.Text;
            bn.SoDienThoai = txtSoDienThoai.Text;
            //hinh
            //if (btnChonHinh.Checked == true)
            //{
                string[] files = ofd.FileName.Split('\\');
                bn.Hinh = files.Last();
            //}
            //else
            //{
            //    bn.Hinh = Hinh;
            //}
            
            //xử lý ngày
            string[] arrngay = (dtiNgayNhap.Text).Split('/');
            string ngayformat = arrngay[1] + "/" + arrngay[0] + "/" + arrngay[2];
            bn.NgaySinh = ngayformat;
            bn.DiaChi = txtDiaChi.Text;
            if (rdNam.Checked == true)
                bn.GioiTinh = 1;
            else
                bn.GioiTinh = 0;

            if (rdCo.Checked == true)
                bn.TheBH = 1;
            else
                bn.TheBH = 0;
            BenhNhan_BUS.CapNhatTinhTrangSucKhoeBenhNhan(chisobn_dto);
            if (BenhNhan_BUS.CapNhatBenhNhan(bn) == true)
            {
                MessageBox.Show("Cập nhật thông tin bệnh nhân thành công");
                if (KhiSua != null)
                    KhiSua();
            }
            else
            {
                MessageBox.Show("Cập nhật thông tin bệnh nhân thất bại");
            }
        }

      

        private void bubbleButton5_Click_1(object sender, DevComponents.DotNetBar.ClickEventArgs e)
        {
            if (BenhNhan_BUS.XoaBenhNhan(txtMa.Text) == true)
            {
                MessageBox.Show("Xóa thành công");
                if (KhiXoa != null)
                    KhiXoa();
                this.Close();
            }
        }
        //tạo bảng chỉ số sức khỏe
        void BangChiSoSucKhoe()
        {
            dgvChiSoSucKhoe.Rows.Add("Thân nhiệt (C)");
            dgvChiSoSucKhoe.Rows.Add("Huyết áp (mm/Hg)");
            dgvChiSoSucKhoe.Rows.Add("Mạch (lần/p)");
            dgvChiSoSucKhoe.Rows.Add("Nhịp thở (lần/p)");
            dgvChiSoSucKhoe.Rows.Add("Chiều cao (cm)");
            dgvChiSoSucKhoe.Rows.Add("Cân nặng (kg)");
            dgvChiSoSucKhoe.Rows.Add("Vòng 2 (cm)");
            dgvChiSoSucKhoe.Rows.Add("Vòng 3 (cm)");
        }
     

        BenhNhan_DTO chisobn_dto = new BenhNhan_DTO();
        private void dgvChiSoSucKhoe_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
           
            chisobn_dto.MaBN = txtMa.Text;
            try
            {
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 0)
                {
                    chisobn_dto.ThanNhiet = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 1)
                {
                    chisobn_dto.HuyetAp = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 2)
                {
                    chisobn_dto.Mach = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 3)
                {
                    chisobn_dto.NhipTho = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 4)
                {
                    chisobn_dto.ChieuCao = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 5)
                {
                    chisobn_dto.CanNang = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 6)
                {
                    chisobn_dto.Vong2 = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
                if (dgvChiSoSucKhoe.CurrentCell.RowIndex == 7)
                {
                    chisobn_dto.Vong3 = int.Parse(dgvChiSoSucKhoe.CurrentRow.Cells[1].Value.ToString());
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show("Điền chỉ số sức khỏe");
            }
            
            }

       
        private void txtTenThuoc_TextChanged(object sender, EventArgs e)
        {
            try
            {
                DataTable dt = Thuoc_BUS.DanhSachThuocTheoTen(txtTenThuoc.Text);
                if (dt == null)
                    btnThem.Enabled = false;
                txtGia.Text = dt.Rows[0]["Gia"].ToString();
                lblDang.Text = dt.Rows[0]["TinhTrang"].ToString();
                lblDang2.Text = lblDang.Text;
                //Mã thuốc
                lblDangThuoc.Text = dt.Rows[0]["MaThuoc"].ToString();
            }
            catch (Exception ex)
            {
            }
        }

      

      

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (txtTenThuoc.Text == "")
            {
                MessageBox.Show("Vui lòng chọn tên thuốc");
            }
            else
            {
                if (Thuoc_BUS.KiemTraThuocTonTaiOut(txtTenThuoc.Text) == 0)
                {
                    if (MessageBox.Show("Thuốc chưa có trong danh mục bạn có muốn thêm thuốc không", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        QuanLyThuocDichVu thuoc = new QuanLyThuocDichVu();
                        thuoc.ShowDialog();
                    }
                }
                else
                {

                    int flag = -1;//chưa trùng
                    for (int i = 0; i < dgvToaThuoc.Rows.Count - 1; i++)
                    {
                        string ten = lblDangThuoc.Text;
                        if (dgvToaThuoc.Rows[i].Cells[1].Value.ToString() == ten)
                        {
                            flag = i;
                        }
                    }
                    if (flag != -1)
                    {
                        int sl = int.Parse(dgvToaThuoc.Rows[flag].Cells[3].Value.ToString());
                        dgvToaThuoc.Rows[flag].Cells[3].Value = sl + int.Parse(UDSoLuong.Value.ToString());
                        dgvToaThuoc.Rows[flag].Cells[4].Value = float.Parse(txtGia.Text) * int.Parse(dgvToaThuoc.Rows[flag].Cells[3].Value.ToString());
                    }
                    else
                    {
                        dgvToaThuoc.Rows.Add("", lblDangThuoc.Text, txtTenThuoc.Text, UDSoLuong.Value.ToString(), (int.Parse(UDSoLuong.Value.ToString()) * float.Parse(txtGia.Text)).ToString(), txtChiDan.Text);
                    }
                }
            }
        }

        private void dgvToaThuoc_RowPrePaint_1(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            dgvToaThuoc.Rows[e.RowIndex].Cells["STTThuoc"].Value = e.RowIndex + 1;
        }

        private void btnThemDV_Click(object sender, EventArgs e)
        {
            int flag = -1;//chưa trùng
            for (int i = 0; i < dgvDichVu.Rows.Count - 1; i++)
            {
               
                if (dgvDichVu.Rows[i].Cells[2].Value.ToString() == cbxDichVu.Text)
                {
                    flag = i;
                }
            }
            if (flag != -1)
            {
                MessageBox.Show("1 dịch vụ thực hiện 1 lần");
               
            }
            else
            {
                dgvDichVu.Rows.Add("", cbxDichVu.SelectedValue.ToString(), cbxDichVu.Text,txtKetQuaDV.Text,lblGia.Text);
            }
        }

        private void dgvDichVu_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            dgvDichVu.Rows[e.RowIndex].Cells["STTDichVu"].Value = e.RowIndex + 1;
        }

        private void btnXoaToaThuoc_Click(object sender, EventArgs e)
        {
            try
            {
                dgvToaThuoc.Rows.RemoveAt(dgvToaThuoc.CurrentCell.RowIndex);
            }
               
            catch(Exception ex)
            {
                MessageBox.Show("Không còn thuốc");
            }

        }

        private void btnXoaDichVu_Click(object sender, EventArgs e)
        {
            try
            {
                dgvDichVu.Rows.RemoveAt(dgvDichVu.CurrentCell.RowIndex);
            }
            catch(Exception ex)
            {                
                MessageBox.Show("Không còn dịch vụ");
            }
        }

        private void cbxDichVu_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string madv = cbxDichVu.SelectedValue.ToString();
                DataTable dt = DichVu_BUS.DanhSachDichVuTheoMa(madv);
                DataRow dr = dt.Rows[0];
                lblGia.Text = dr["Gia"].ToString();
                lblVND.Text = "VNĐ";
            }
            catch (Exception ex)
            {
               
            }
        }

        private void btnLuuHoaDonDichVu_Click(object sender, EventArgs e)
        {
            
            HoaDonDichVu_DTO hddv_dto = new HoaDonDichVu_DTO();
            //xử lý ngày
            string[] ngaybokhoangtrang = lblNgayLap.Text.Split(' ');
            string[] ngaybocheo = ngaybokhoangtrang[0].Split('/');
            hddv_dto.NgayLap = ngaybocheo[1] + "/" + ngaybocheo[0] + "/" + ngaybocheo[2];
            float TongGiaDV = 0;
            for (int i = 0; i < dgvDichVu.Rows.Count - 1; i++)
            {
                if (dgvDichVu.Rows[i].Cells[4].Value.ToString() != "")
                {
                    TongGiaDV = TongGiaDV + float.Parse(dgvDichVu.Rows[i].Cells[4].Value.ToString());
                }
            }
            hddv_dto.ThanhTien = TongGiaDV;
            hddv_dto.MaNV=ThongTinDangNhap.MaNV;
            hddv_dto.MaBN=MaBN;
            string maHDDV = HoaDonDichVu_BUS.ThemHoaDonDichVuOut(hddv_dto);
            if (maHDDV!= null)
            {
                if (dgvDichVu.Rows.Count == 0)
                {
                    MessageBox.Show("Vui lòng thêm dịch vụ");
                }
                else
                {
                    ChiTietDichVu_DTO ctdv_dto = new ChiTietDichVu_DTO();
                    ctdv_dto.MaHDDichVu = maHDDV;
                    for (int i = 0; i < dgvDichVu.Rows.Count ; i++)
                    {
                        ctdv_dto.MaDV = dgvDichVu.Rows[i].Cells[1].Value.ToString();
                        ctdv_dto.KetQua = dgvDichVu.Rows[i].Cells[3].Value.ToString();
                        ChiTietDichVu_BUS.ThemChiTietDichVu(ctdv_dto);
                    }
                    MessageBox.Show("Lập hóa đơn thành công");
                }
            }
            else
            {
                MessageBox.Show("Lập hóa đơn thất bại");
            }  

        }

        private void btnHDT_Click(object sender, EventArgs e)
        {
            HoaDonThuoc_DTO hdthuoc_dto = new HoaDonThuoc_DTO();
            //xử lý ngày
            string[] ngaybokhoangtrang = lblNgayLap.Text.Split(' ');
            string[] ngaybocheo = ngaybokhoangtrang[0].Split('/');
            hdthuoc_dto.NgayLap = ngaybocheo[1] + "/" + ngaybocheo[0] + "/" + ngaybocheo[2];
            float TongGiaThuoc = 0;
            for (int i = 0; i < dgvToaThuoc.Rows.Count - 1; i++)
            {
                if (dgvToaThuoc.Rows[i].Cells[4].Value.ToString() != "")
                {
                    TongGiaThuoc = TongGiaThuoc + float.Parse(dgvToaThuoc.Rows[i].Cells[4].Value.ToString());
                }
            }
            hdthuoc_dto.ThanhTien = TongGiaThuoc;
            hdthuoc_dto.MaNV = ThongTinDangNhap.MaNV;
            hdthuoc_dto.MaBN = MaBN;
            string maHDThuoc = HoaDonThuoc_BUS.ThemHoaThuocOut(hdthuoc_dto);
            if (maHDThuoc != null)
            {
                if (dgvToaThuoc.Rows.Count == 0)
                {
                    MessageBox.Show("Vui lòng thêm Thuốc");
                }
                else
                {
                    ChiTietToaThuoc_DTO ctthuoc_dto = new ChiTietToaThuoc_DTO();
                    ctthuoc_dto.MaHDThuoc = maHDThuoc;
                    bool flag = false;
                    for (int i = 0; i < dgvToaThuoc.Rows.Count; i++)
                    {
                        ctthuoc_dto.MaThuoc = dgvToaThuoc.Rows[i].Cells[1].Value.ToString();
                        ctthuoc_dto.SoLuong = int.Parse(dgvToaThuoc.Rows[i].Cells[3].Value.ToString());
                        ctthuoc_dto.DonGia = float.Parse(dgvToaThuoc.Rows[i].Cells[4].Value.ToString());
                        ctthuoc_dto.ChiDan = dgvToaThuoc.Rows[i].Cells[5].Value.ToString();
                        if (ChiTietThuoc_BUS.ThemChiTietThuoc(ctthuoc_dto) == true)
                            flag = true;
                    }
                    if (flag == true)
                    {
                        MessageBox.Show("Lập hóa đơn thành công");
                    }
                }
            }
            else
            {
                MessageBox.Show("Lập hóa đơn thất bại");
            } 
        }


        // Quản lý Hồ sơ bệnh án

        void DanhSachHSBA()
        {
           lblTenNhanVien.Text = ThongTinDangNhap.Ten;
           DataTable dt = new DataTable();
           dt = HoSoBenhAn_BUS.DanhSachHSBA(MaBN);
           dgvHoSo.AutoGenerateColumns = false;
           dgvHoSo.DataSource = dt;
        }
        private void bbThemHSBA_Click(object sender, DevComponents.DotNetBar.ClickEventArgs e)
        {
            HoSoBenhAn_DTO hsba_dto = new HoSoBenhAn_DTO();
            //xử lý ngày
            string[] arrngay = (dtiNgayLapHSBA.Text).Split('/');
            if(arrngay.Length == 1)
            {
                MessageBox.Show("Vui lòng nhập ngày");
            }
            else
            {
                string ngayformat = arrngay[1] + "/" + arrngay[0] + "/" + arrngay[2];
                hsba_dto.NgayLap = ngayformat;
                hsba_dto.ChuanDoan = txtChuanDoan.Text;
                hsba_dto.ChiDinh = txtChiDinh.Text;
                hsba_dto.TrieuChung = txtTrieuChung.Text;
                hsba_dto.MaBN = MaBN;
                hsba_dto.MaNV = ThongTinDangNhap.MaNV;
                if (HoSoBenhAn_BUS.ThemHoSoBenhAn(hsba_dto) == true)
                {
                    MessageBox.Show("Thêm hồ sơ thành công");
                    DanhSachHSBA();
                }
                else
                {
                    MessageBox.Show("Thêm hồ sơ thất bại");
                }
            }
            
        }

        private void bbXoaHSBA_Click(object sender, DevComponents.DotNetBar.ClickEventArgs e)
        {
            string ma = txtMaHoSo.Text;
            if (ma == "")
            {
                MessageBox.Show("Không tồn tại mã hồ sơ");
            }
            else
            {
                if (HoSoBenhAn_BUS.XoaHoSoBenhAn(ma) == true)
                {
                    MessageBox.Show("Xóa hồ sơ thành công");
                    DanhSachHSBA();
                }
                else
                {
                    MessageBox.Show("Xóa hồ sơ thất bại");
                }
            }
         }

        private void dgvHoSo_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int dong = e.RowIndex;
                txtMaHoSo.Text = dgvHoSo.Rows[dong].Cells[0].Value.ToString();
                txtChuanDoan.Text = dgvHoSo.Rows[dong].Cells["ChuanDoan"].Value.ToString();
                txtChiDinh.Text = dgvHoSo.Rows[dong].Cells["ChiDinh"].Value.ToString();
                txtTrieuChung.Text = dgvHoSo.Rows[dong].Cells["TrieuChung"].Value.ToString();
                dtiNgayLapHSBA.Text = dgvHoSo.Rows[dong].Cells["NgayLap"].Value.ToString();
            }
            catch (Exception ex)
            {
 
            }

        }

        private void bbLamMoíHSBA_Click(object sender, DevComponents.DotNetBar.ClickEventArgs e)
        {
            txtMaHoSo.Text = "";
            txtChuanDoan.Text = "";
            txtChiDinh.Text = "";
            txtTrieuChung.Text = "";
            dtiNgayLapHSBA.Text = "";
        }

        private void bbSuaHSBA_Click(object sender, DevComponents.DotNetBar.ClickEventArgs e)
        {

            HoSoBenhAn_DTO hsba_dto = new HoSoBenhAn_DTO();
            hsba_dto.MaHoSo = txtMaHoSo.Text;
            if (txtMaHoSo.Text == "")
            {
                MessageBox.Show("Không tồn tại mã hồ sơ");
            }
            else
            {
                //xử lý ngày
                string[] arrngay = (dtiNgayNhap.Text).Split('/');
                string ngayformat = arrngay[1] + "/" + arrngay[0] + "/" + arrngay[2];
                hsba_dto.NgayLap = ngayformat;
                hsba_dto.ChuanDoan = txtChuanDoan.Text;
                hsba_dto.ChiDinh = txtChiDinh.Text;
                hsba_dto.TrieuChung = txtTrieuChung.Text;
                hsba_dto.MaNV = ThongTinDangNhap.MaNV;
                if (HoSoBenhAn_BUS.CapNhatHSBA(hsba_dto) == true)
                {
                    MessageBox.Show("Cập nhật thành công");
                    DanhSachHSBA();
                }
                else
                {
                    MessageBox.Show("Cập nhật thất bại");
                }
            }
        }
         
        


 }


    }

